package com.canaan.business.mapper.storehouse;

import java.util.List;
import com.canaan.business.domain.storehouse.StockStage;
import org.apache.ibatis.annotations.Param;

/**
 * 库存水位管理Mapper接口
 *
 * @author ruoyi
 * @date 2023-02-13
 */
public interface StockStageMapper {
    /**
     * 查询库存水位管理
     *
     * @param id 库存水位管理主键
     * @return 库存水位管理
     */
    public StockStage selectStockStageById(Long id);

    /**
     * 查询库存水位管理列表
     *
     * @param stockStage 库存水位管理
     * @return 库存水位管理集合
     */
    public List<StockStage> selectStockStageList(StockStage stockStage);

    /**
     * 新增库存水位管理
     *
     * @param stockStage 库存水位管理
     * @return 结果
     */
    public int insertStockStage(StockStage stockStage);

    /**
     * 批量新增库存水位管理
     *
     * @param stockStageList 库存水位管理列表
     * @return 结果
     */
    public int batchInsertStockStage(List<StockStage> stockStageList);

    /**
     * 修改库存水位管理
     *
     * @param stockStage 库存水位管理
     * @return 结果
     */
    public int updateStockStage(StockStage stockStage);

    /**
     * 批量修改库存水位管理
     *
     * @param stockStageList 库存水位管理列表
     * @return 结果
     */
    public int batchUpdateStockStage(List<StockStage> stockStageList);

    /**
     * 删除库存水位管理
     *
     * @param id 库存水位管理主键
     * @return 结果
     */
    public int deleteStockStageById(Long id);

    /**
     * 批量删除库存水位管理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStockStageByIds(Long[] ids);

    /**
     * 查询库存水位管理
     *
     * @param no 编号
     * @return 库存水位管理
     */
    public StockStage selectStockStageByNo(String no);

    /**
     * 批量删除库存水位管理
     *
     * @param nos 需要删除的编号集合
     * @return 结果
     */
    public int deleteStockStageByNos(String[] nos);

    /**
     * 删除库存水位管理信息
     *
     * @param no 编号
     * @return 结果
     */
    public int deleteStockStageByNo(String no);

    /**
     * 根据物料编号或物料类型，查询库存水位管理（用于判重）
     *
     * @param id 库存水位管理主键
     * @param productNo 物料编号
     * @param productType 物料类型
     * @return 库存水位管理
     */
    StockStage selectByProductNoOrType(@Param("id")Long id, @Param("productNo")String productNo, @Param("productType")String productType);

}
